package com.sjgl.esdn.controller;

import com.sjgl.esdn.constant.UserConstantsESDN;
import com.sjgl.esdn.domain.AjaxResultESDN;
import com.sjgl.esdn.service.FileService;
import com.sjgl.esdn.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * 文件点赞控制器
 *
 * @author 缪恒铭
 * @date 2022/08/25
 */
@RestController
@RequestMapping("/fileLike")
public class FileLikeController extends BaseControllerESDN {
    @Autowired
    FileService fileService;

    @Autowired
    UserService userService;

    /**
     * 是否用户喜欢文件
     *
     * @param userId 用户id
     * @param fileId 文件id
     * @return {@link AjaxResultESDN}
     */
    @GetMapping("judge")
    public AjaxResultESDN isUserLikeFile(Long userId, Long fileId) {
        //参数检查
        if (!fileService.isFileExist(fileId) || UserConstantsESDN.UNIQUE.equals(userService.checkUserUnique(userId))) {
            return AjaxResultESDN.error("参数错误");
        }

        //判断用户是否喜欢文件
        return AjaxResultESDN.success().put("isLike", fileService.isUserLikeFile(userId, fileId));
    }

    /**
     * 更新用户喜欢文件
     *
     * @param userId 用户id
     * @param fileId 文件id
     * @return {@link AjaxResultESDN}
     */
    @GetMapping("update")
    public AjaxResultESDN updateUserLikeFile(Long userId, Long fileId) {
        //参数检查
        if (!fileService.isFileExist(fileId) || UserConstantsESDN.UNIQUE.equals(userService.checkUserUnique(userId))) {
            return AjaxResultESDN.error("参数错误");
        }
        //根据用户点赞情况，点赞/取消点赞
        if (fileService.isUserLikeFile(userId, fileId)) {
            fileService.deleteUserLikeFile(userId, fileId);
            return AjaxResultESDN.success("已取消点赞");
        } else {
            fileService.addUserLikeFile(userId, fileId);
            return AjaxResultESDN.success("已点赞");
        }
    }
}
